#ifndef THREAD_MANGER
#define THREAD_MANGER
#include <pthread.h>

#define MAX_THREADS 10
#define QUEUE_SIZE 100

typedef struct {
    int sock;
    //handle 可以为不同任务注册不同的处理函数
} task_t;



// 线程池结构体
typedef struct {
    pthread_mutex_t lock;           //互斥锁
    pthread_cond_t cond;            //条件变量
    task_t tasks[QUEUE_SIZE];       //任务列表
    pthread_t threads[MAX_THREADS]; //线程列表
    int task_count;                 //当前任务队列中的任务计数
    int shutdown;
    int head;                       //目前指向的任务队列的位置，即即将执行的队列位置
    int tail;                       //当前任务队列的队尾，即新的任务进来存放的位置
    void (*handle_client)(int socket);
} threadpool_t;


void threadpool_init(threadpool_t *pool);
void threadpool_add_task(threadpool_t *pool, task_t task);
void threadpool_destroy(threadpool_t *pool);

#endif